package main

import "fmt"
/*
	水壶问题
有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶，从而可以得到恰好 z升 的水？
如果可以，最后请用以上水壶中的一或两个来盛放取得的 z升 水。

你允许：
装满任意一个水壶
清空任意一个水壶
从一个水壶向另外一个水壶倒水，直到装满或者倒空

示例 1: (From the famous "Die Hard" example)
输入: x = 3, y = 5, z = 4
输出: True
 */

func canMeasureWater(x int, y int, z int) bool {
	if x == z || y == z {
		return true
	}
	for ; z != 0 && y != 0 && z < x+y; x, y, z = y, x%y, z%y {
	}
	return z == 0 || z == x+y
}

func main() {
	fmt.Println(canMeasureWater(3, 5, 4))
}
